﻿//===========================[ 8 / 4 / 2011 LVI ]=============================
//				Copyright c Vitaly Lyaschenko <SkyChameleon@gmail.com>
//								Source file
// Purpose: генерация значений по различным законам распределения
//=============================================================================

#include "Random.h"

float u = 0.0,
      v = 1.0;
///////////////////////////////////////////////////////////////////////////
// возвращает данные в интервале [0..1]
float unifRand()
{
	return rand() / float(RAND_MAX);
}
///////////////////////////////////////////////////////////////////////////
// Экспоненциальное распределение
float distExp()
{
	float x = 1 - exp( -1 * ( unifRand() ));
	return x;
}
///////////////////////////////////////////////////////////////////////////
// Распределение Коши
float distCauchy()
{
	float x = 0.5 + atan(( unifRand() - u ) / v ) / PI;
	return x;
}
///////////////////////////////////////////////////////////////////////////
// Нормальное распределение
float distNormal()
{
	float x = (1/(sqrt(2*PI)*v))*exp(-(pow(unifRand()-u,2)/(2*(pow(v,2)))));
	return x;
	//sqrt(-1.0 * log(pR->unifRand())) * cos(2.0 * PI * pR->unifRand());
}